Indexing and Slicing (NumPy) in Python in Hindi

Arpit Nageshwar
⏰ 4 min read

Indexing and Slicing (NumPy) in Python in Hindi – NumPy Array से Data कैसे निकालें?

Table of Contents

जब भी हम NumPy array के साथ काम करते हैं, तो सबसे पहला और सबसे जरूरी काम होता है – array के अंदर से चाहिए हुआ data निकालना। इसी काम को Indexing और Slicing कहते हैं।

  • Indexing का मतलब है array में से एक specific position की value को access करना, जैसे पहली value या last value।

  • Slicing का मतलब है array में से एक साथ कई values को एक range के रूप में निकालना, यानी एक हिस्सा (part) select करना।

  • NumPy arrays normal Python list से इस मामले में ज्यादा powerful होते हैं, क्योंकि इनमें multi-dimensional indexing और fancy indexing जैसी advanced techniques भी मिलती हैं।

  • Data Science, Machine Learning और Image Processing जैसी fields में यह concept रोज़ाना इस्तेमाल होता है, इसलिए इसे अच्छे से समझना बहुत जरूरी है।

Array Indexing

Array Indexing का मतलब है array के अंदर किसी एक particular position की value को access करना। NumPy में indexing की शुरुआत हमेशा 0 से होती है, ठीक normal Python list की तरह।

import numpy as np

arr = np.array([10, 20, 30, 40, 50])

print(arr[0])   # 10
print(arr[2])   # 30
print(arr[-1])  # 50 (last value)
  • Positive index का मतलब होता है शुरुआत से गिनती करना, यानी arr[0] पहली value देगा।

  • Negative index का मतलब होता है आखिर से गिनती करना, यानी arr[-1] हमेशा last value देगा।

  • अगर दी गई index array के size से बाहर हो, तो Python IndexError देता है, इसलिए index हमेशा valid range के अंदर होना चाहिए।

  • Indexing से हम एक बार में सिर्फ एक ही value access कर पाते हैं, अगर कई values चाहिए तो Slicing का इस्तेमाल किया जाता है।

Array Slicing

Slicing का इस्तेमाल तब होता है जब हमें array में से एक साथ कई values, यानी एक continuous range निकालनी हो। इसका basic syntax होता है array[start:stop:step]

import numpy as np

arr = np.array([10, 20, 30, 40, 50, 60])

print(arr[1:4])     # [20 30 40]
print(arr[:3])      # [10 20 30]
print(arr[2:])      # [30 40 50 60]
print(arr[::2])     # [10 30 50]
print(arr[::-1])    # [60 50 40 30 20 10]
  • start बताता है slicing कहाँ से शुरू होगी, अगर ना दिया जाए तो यह शुरुआत यानी 0 मान लिया जाता है।

  • stop बताता है slicing कहाँ खत्म होगी, लेकिन ध्यान रहे कि stop वाली index की value शामिल नहीं होती।

  • step बताता है कि हर बार कितनी values छोड़कर अगली value ली जाएगी, जैसे ::2 का मतलब है एक value छोड़कर अगली value लेना।

  • एक बहुत important बात यह है कि NumPy में slicing करने से जो नया array मिलता है, वो असली array का एक "view" होता है, नई copy नहीं। यानी अगर slice में कोई change किया जाए, तो original array भी बदल जाता है।

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
part = arr[1:4]
part[0] = 100

print(arr)   # [1 100 3 4 5]
arr = [10, 20, 30, 40, 50, 60] 10 index 0 20 index 1 30 index 2 40 index 3 50 index 4 60 index 5 arr[1:4] → [20, 30, 40] (dark boxes select ho rahe hai)

यह SVG दिखा रहा है कि arr[1:4] लिखने पर index 1 से index 3 तक की values (dark purple boxes) कैसे select होती हैं, index 4 शामिल नहीं होता।

Multi-Dimensional Indexing

असली projects में हमेशा एक-dimensional array काम नहीं आता, बल्कि अक्सर हमें 2D या 3D arrays के साथ काम करना पड़ता है, जैसे matrix या image data। NumPy में multi-dimensional array के हर dimension के लिए अलग index दिया जाता है।

import numpy as np

arr2d = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

print(arr2d[0, 0])   # 1  (pehli row, pehla column)
print(arr2d[1, 2])   # 6  (dusri row, teesra column)
print(arr2d[2])      # [7 8 9]  (poori teesri row)
print(arr2d[:, 1])   # [2 5 8] (poora dusra column)
  • 2D array में index हमेशा arr[row, column] के format में दिया जाता है।

  • अगर सिर्फ row चाहिए तो arr2d[row_number] लिख सकते हैं, इससे पूरी row मिल जाती है।

  • अगर पूरा column चाहिए तो arr2d[:, column_number] लिखा जाता है, यहाँ : का मतलब है "सारी rows"।

  • Slicing भी multi-dimensional arrays पर उसी तरह लागू होती है, जैसे arr2d[0:2, 1:3] से एक छोटा sub-matrix मिल जाता है।

import numpy as np

arr2d = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

sub_matrix = arr2d[0:2, 1:3]
print(sub_matrix)
# [[2 3]
#  [5 6]]

Practical Examples

अब कुछ ऐसे examples देखते हैं जो असली programs में बार-बार काम आते हैं।

Example 1: पहली और आखिरी value निकालना

import numpy as np

marks = np.array([56, 78, 90, 65, 40, 88])

print("Pehla number:", marks[0])
print("Aakhri number:", marks[-1])

Example 2: बीच के हिस्से को निकालना

import numpy as np

marks = np.array([56, 78, 90, 65, 40, 88])

middle = marks[1:5]
print("Beech ke marks:", middle)

Example 3: Slice के जरिए values को बदलना

import numpy as np

marks = np.array([56, 78, 90, 65, 40, 88])

marks[2:4] = [0, 0]
print(marks)   # [56 78 0 0 40 88]

Example 4: 2D data में एक block select करना

import numpy as np

grid = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12]])

block = grid[0:2, 1:3]
print(block)
# [[2 3]
#  [6 7]]

Fancy Indexing in NumPy

Fancy Indexing NumPy की एक बहुत powerful feature है, जिसमें हम normal index या slice की जगह, एक साथ multiple index values की list या array देकर values select कर सकते हैं।

import numpy as np

arr = np.array([10, 20, 30, 40, 50, 60])

indices = [0, 2, 4]
print(arr[indices])   # [10 30 50]
  • Fancy Indexing में हम index की एक list या array पास करते हैं, और उन सभी positions की values एक साथ एक नए array में मिल जाती हैं।

  • यह normal slicing से अलग है क्योंकि इसमें हमें continuous range देने की जरूरत नहीं, बल्कि हम कोई भी random positions चुन सकते हैं।

  • Fancy Indexing का इस्तेमाल condition के आधार पर values select करने में भी होता है, जैसे –

import numpy as np

arr = np.array([10, 20, 30, 40, 50, 60])

result = arr[arr > 25]
print(result)   # [30 40 50 60]

यहाँ arr > 25 एक Boolean array बनाता है, जो बताता है कि कौन-कौन सी values 25 से बड़ी हैं, और उसी के आधार पर fancy indexing उन values को select कर लेती है। इसे Boolean Indexing भी कहा जाता है।

  • एक बहुत important बात यह है कि Fancy Indexing हमेशा एक नई copy बनाती है, ना कि original array का view। इसलिए fancy indexing से मिले हुए result में change करने पर original array पर असर नहीं पड़ता।

arr = [10, 20, 30, 40, 50, 60] | indices = [0, 2, 4] 10 index 0 20 index 1 30 index 2 40 index 3 50 index 4 60 index 5 arr[[0, 2, 4]] → [10, 30, 50] (dark boxes fancy indexing se select hue)

यह SVG दिखा रहा है कि Fancy Indexing में index 0, 2 और 4 (dark purple boxes) को एक साथ चुनकर कैसे एक नया array [10, 30, 50] बनाया जाता है।

Difference Between Array Indexing and Slicing in Python in Hindi

  • Value की संख्या:
    Indexing से एक बार में सिर्फ एक ही value मिलती है, जबकि Slicing से एक साथ कई values का group मिलता है।

  • Result का Type:
    Indexing करने पर आमतौर पर एक single value return होती है, जबकि Slicing करने पर हमेशा एक नया array return होता है।

  • Original Array पर असर:
    Slicing से मिला array असल array का "view" होता है, यानी उसमें change करने पर original array भी बदल जाता है, जबकि simple indexing से मिली single value बदलने का ऐसा सीधा असर नहीं होता।

  • Syntax:
    Indexing में सिर्फ एक number दिया जाता है, जैसे arr[2], जबकि Slicing में start:stop:step का इस्तेमाल होता है, जैसे arr[1:4]

  • Use Case:
    Indexing तब इस्तेमाल होता है जब हमें कोई specific single value चाहिए, जबकि Slicing तब इस्तेमाल होता है जब array का एक हिस्सा या range चाहिए।

FAQs

Array Indexing से हमें array की एक specific position की single value मिलती है, जबकि Array Slicing से हमें एक range के अंदर की कई values एक साथ एक नए array के रूप में मिलती हैं।
NumPy में slicing से मिला हुआ नया array असली array का ही एक view होता है, इसलिए अगर slice में कोई value बदली जाए तो original array में भी वही बदलाव दिख जाता है।
Multi-Dimensional Indexing में हर dimension के लिए अलग index दिया जाता है, जैसे 2D array में arr[row, column] लिखकर किसी specific row और column की value access की जाती है।
Fancy Indexing में हम एक साथ कई index values की list या कोई condition देकर array में से matching values select कर सकते हैं। यह continuous range तक सीमित नहीं होती और हमेशा एक नई copy return करती है।
नहीं, Fancy Indexing हमेशा एक नई अलग copy बनाती है, इसलिए उसमें किया गया कोई भी बदलाव original array पर असर नहीं डालता, जो कि normal slicing से अलग व्यवहार है।
Arpit Nageshwar

✍️ Arpit Nageshwar

Post-graduated | Web Developer | +3 yr Experience | IIT Kharagpur Certified